package com.xsd.principle.singleresponsibility;

/**
 * @Description: 单一职责原则
 * @Author: zhoufuzong
 * @Created: 2021-01-16 17:19:16
 * @Version: 1.1.0
 */

/**
 * 对类来说的，即一个类应该只负责一项职责。如类A负责两个不同职责：职责1，职责2。
 * 当职责1需求变更而改变A时，可能造成职责2执行错误，所以需要将类A的粒度分解为
 * A1，A2
 * 1.降低类的复杂度，一个类只负责一项职责
 * 2 提高类的可读性
 * 3 降低变更引起的风险
 * 4 通常情况下，我们应当遵守单一职责原则，只有逻辑足够简单，才可以在代码级违反单一职责原则；只有类中方法数量足够少，才可在方法级别保持单一级别原则
 */

public class SingleRsponsibility3 {
    public static void main(String[] args) {
        Vehicle2 vehicle2 = new Vehicle2();

        vehicle2.run("汽车");
        vehicle2.runAir("飞机");
        vehicle2.runWater("轮船");


    }
}

/*
    方法3 的分析
    1. 这种修改方式没有对原来的类做大的修改，只是增加方法
    2. 这里虽然没有在类的 级别上遵守单一职责原则，但在方法级别上遵守了
 */
class Vehicle2{
    public void run(String vehicle){
        System.out.println(vehicle + "在公路上运行....");
    }

    public void runAir(String vehicle){
        System.out.println(vehicle + "在天空上运行....");
    }
    public void runWater(String vehicle){
        System.out.println(vehicle + "在水中上运行....");
    }

}
